package ch14;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
	public static void main(String[] args) throws Exception {
		try (ServerSocket serverSocket = new ServerSocket(12345)) {
			System.out.println("伺服器啟動,等待連線...");
			try (Socket socket = serverSocket.accept();
					BufferedReader in = new BufferedReader(
							new InputStreamReader(socket.getInputStream(), StandardCharsets.UTF_8));
					OutputStream rawOut = socket.getOutputStream();
					PrintWriter out = new PrintWriter(rawOut, true)) {
				String line;
				while ((line = in.readLine()) != null && !line.isEmpty()) {
					System.out.println("收到: " + line);
				}
				// 準備回應內容
				String body = "伺服器回覆的字樣";
				byte[] bodyBytes = body.getBytes(StandardCharsets.UTF_8);
				// 回傳最基本的 HTTP/1.1 回應
				out.print("HTTP/1.1 200 OK\r\n");
				out.print("Content-Type: text/plain; charset=UTF-8\r\n");
				out.print("Content-Length: " + bodyBytes.length + "\r\n");
				out.print("Connection: close\r\n");
				out.print("\r\n"); // 空行分隔 header 與 body
				out.flush();
				rawOut.write(bodyBytes);
				rawOut.flush();
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}